From: awilliam@xenbuild2.aw Date: Tue, 20 Mar 2007 15:21:47 +0000 (-0600) Subject: [IA64] Fix isr setting vs viosapic interupt delivery X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~15287 X-Git-Url: https://dgit.raspbian.org/%22http:/www.example.com/cgi/%22https:/%22bookmarks://%22Dat/%22http:/www.example.com/cgi/%22https:/%22bookmarks:/%22Dat?a=commitdiff_plain;h=4aee81be211166058b8715958d4bdb65588073e1;p=xen.git [IA64] Fix isr setting vs viosapic interupt delivery When the HVM guest is used with vcpu=5, the hypervisor may report: "redir 10 not set for 180 EOI", and the HVM guest is Hung. When the hypervisor with a vcpu context delivers to another vcpu, EOI might be sent before ISR is set. We should modify to call viosapic_delver() after ISR setting. Signed-off-by: Tsunehisa Doi Signed-off-by: Tomonari Horikoshi --- diff --git a/xen/arch/ia64/vmx/viosapic.c b/xen/arch/ia64/vmx/viosapic.c index f52a1f6590..bed4e2bec6 100644 --- a/xen/arch/ia64/vmx/viosapic.c +++ b/xen/arch/ia64/vmx/viosapic.c @@ -104,11 +104,11 @@ static void service_iosapic(struct viosapic *viosapic) while ( (irq = iosapic_get_highest_irq(viosapic)) != -1 ) { - viosapic_deliver(viosapic, irq); - if ( viosapic->redirtbl[irq].trig_mode == SAPIC_LEVEL ) viosapic->isr |= (1UL << irq); + viosapic_deliver(viosapic, irq); + viosapic->irr &= ~(1UL << irq); } }